[C++] * 和 &的用法和区别

在C++里,每一个变量都在内存中对应着一个地址。
如果使用指针创建的话,那么指针的空间在栈中,指针所指向的值在堆中。

*适用于指针类型,用于取指针所指向的值

1
2
3
4
5
6
7
8
9
10

int main() {
int *p;
*p = 1;
std::cout << *p << "\n";
std::cout << p;
return 0;
}
//1
//0x7fff5c4afaf8

& 相反,用于取变量的地址

1
2
3
4
5
6
7
8
int main() {
int v = 1;
std::cout << &v << "\n";
std::cout << v;
return 0;
}
//0x7fff56cb9ad8
//1